home *** CD-ROM | disk | FTP | other *** search
/ 64'er Special 52 / 64er_Magazin_Sonderheft_52_19xx_Markt__Technik_de_Side_B.d64 / listing 26 (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  6KB  |  199 lines

  1. 0 rem *****************************
  2. 1 rem * adventure-programmierkurs *
  3. 2 rem *                           *
  4. 3 rem *     uebungs-programm      *
  5. 4 rem *****************************
  6. 9 rem basic-erweiterung
  7. 10 data76,24,1,177,251,145,251,200,208,249,230,252,202,208,244,96,120,160,0,169
  8. 12 data160,132,251,133,252,162,32,32,11,1,169,224,132,251,133,252,162,32,32,11
  9. 14 data1,169,53,133,1,88,96:fori=264to310:readx:pokei,x:next:sys264
  10. 16 fori=710to730:readx:pokei,x:next
  11. 18 data208,3,76,29,168,32,192,2,32,19,166,56,165,95,233,1,164,96,76,36,168
  12. 20 poke40996,197:poke40997,2:poke1,54
  13. 22 fori=43168to43170:readx:pokei,x:next
  14. 24 fori=704to709:readx:pokei,x:next
  15. 26 data32,192,2,32,138,173,76,247,183
  16. 30 gosub52000: rem tabellen definieren
  17. 100 zn=1:goto1130
  18. 1000 rem a c t i o n m o d u l
  19. 1010 gosub50000: rem befehlseingabe
  20. 1100 rem gehen in ein neues zimmer
  21. 1105 ifve<1orve>10then1200
  22. 1110 ifri(ve)=0thenprint"kein weg in diese richtung !":ve=0:goto1200
  23. 1120 zn=ri(ve):print"[147]"
  24. 1130 ve=0
  25. 1140 restore 10000+zn*100
  26. 1150 fori=1to10:readri(i):next
  27. 1155 gosub 10000+zn*100
  28. 1160 print"moegliche richtungen : ";
  29. 1165 ic=0:fori=1to10:ifri(i)<>0thenprintve$(i);",";:ic=1
  30. 1170 nexti
  31. 1175 ific=0thenprint"keine."
  32. 1180 ific=1thenprintchr$(20)
  33. 1185 print"ich sehe : ";
  34. 1186 ic=0:fori=1tooz:ifoo(i)=znthenprintob$(i);",";:ic=1
  35. 1187 next
  36. 1188 fori=1togz:ifge(i)=znthenprintge$(i);",";:ic=1
  37. 1189 ifge(i)=-2andtu(2)=0andzn=5thenprintge$(i);",";:ic=1
  38. 1190 next
  39. 1192 ific=0thenprint"nichts besonderes."
  40. 1194 ific=1thenprintchr$(20)
  41. 1200 rem
  42. 2000 rem reaktion auf befehle (allgemeine action)
  43. 2100 rem nimm routine
  44. 2110 ifve<>15then2200
  45. 2115 ifob<>0thenprint"das geht ueber meine kraefte !":goto2200
  46. 2119 ifge(g1)=-2andzn=5andtu(2)=0then2125
  47. 2120 ifge(g1)<>znthenprint"ich sehe diesen gegenstand hier nicht !"
  48. 2125 ifge(g1)=-1thenprint"sie haben diesen gegenstand bereits !"
  49. 2130 ifge(g1)=znthenge(g1)=-1:print"ok."
  50. 2200 rem inventur routine
  51. 2205 ifve<>22then2300
  52. 2210 print"ich habe: ";
  53. 2220 ic=0:fori=1togz:ifge(i)=-1thenprintge$(i)",";:ic=1
  54. 2225 next
  55. 2230 ific=0thenprint"nichts."
  56. 2235 ific=1thenprint"[157] "
  57. 2300 rem verlier routine
  58. 2301 ifob<>0then2400
  59. 2305 ifve<>18then2400
  60. 2310 ifge(g1)<>-1thenprint"ich habe das nicht !"
  61. 2320 ifge(g1)=-1thenge(g1)=zn:print"ok."
  62. 2400 rem schau - routine
  63. 2405 ifve<>13then2500
  64. 2410 ifob=0andg1=0thenprint"[147]":ve=0:goto1130
  65. 2415 ifob=1andoo(1)=znthenprint"die truhe ist sehr gross."
  66. 2500 rem aufruf der raumspezifischen action
  67. 2505 gosub3000 : rem gespenst
  68. 2510 gosub 10000+zn*100+20
  69. 2520 ifve>0andve<11then1100
  70. 2600 goto1000
  71. 3000 rem steuerung des gespenstes
  72. 3010 ifmo=0thenreturn
  73. 3020 mo=mo+1:ifmo=12thenmo=1
  74. 3025 ifpe(mo)<>znthen3100
  75. 3030 print"ein riesiges gespenst erscheint !"
  76. 3100 ic=0:fori=1togz:ifge(i)=pe(mo)thenic=i
  77. 3105 next
  78. 3110 ific=0then3150
  79. 3120 ge(gf)=pe(mo):gf=ic:ge(ic)=0
  80. 3150 ifpe(mo)=5andzn=7andtu(2)=0thentu(2)=1:print"jemand schliesst die truhe !"
  81. 3160 return
  82. 10000 rem ------- spielkarte -------
  83. 10100 rem raum 1 ---------
  84. 10102 data 0,3,0,2,0,0,0,0,0,0
  85. 10105 print"raum nummer 1"
  86. 10120 return
  87. 10200 rem raum 2 ---------
  88. 10202 data 0,0,1,0,0,0,0,6,0,0
  89. 10205 print"raum nummer 2"
  90. 10220 iftu(1)=0thenri(2)=5
  91. 10224 ifve=11andob=5andge(3)<>-1thenprint"ich habe keinen schluessel.":goto10230
  92. 10225 ifve=11andob=5andtu(1)=1thenprint"ok.":tu(1)=0:ri(2)=5
  93. 10230 ifve=12andob=5andtu(1)=0thenprint"ok.":tu(1)=1:ri(2)=0
  94. 10240 ifve=23andob=5thenve=2
  95. 10250 return
  96. 10300 rem raum 3 ---------
  97. 10302 data 1,0,0,0,0,0,0,0,0,4
  98. 10305 print"raum nummer 3"
  99. 10320 return
  100. 10400 rem raum 4 ---------
  101. 10402 data 0,0,0,0,0,0,0,0,3,0
  102. 10405 print"raum nummer 4"
  103. 10420 return
  104. 10500 rem raum 5 ---------
  105. 10502 data 0,0,0,0,0,0,0,0,0,0
  106. 10505 print"raum nummer 5"
  107. 10520 iftu(1)=0thenri(1)=2
  108. 10524 ifve=11andob=5andge(3)<>-1thenprint"ich habe keinen schluessel.":goto10230
  109. 10525 ifve=11andob=5andtu(1)=1thenprint"ok.":tu(1)=0:ri(1)=2
  110. 10530 ifve=12andob=5andtu(1)=0thenprint"ok.":tu(1)=1:ri(1)=0
  111. 10540 ifve=23andob=5thenve=1
  112. 10545 ifve=11andob=1andtu(2)=1thenprint"ok.":tu(2)=0
  113. 10546 ifve=12andob=1andtu(2)=0thenprint"ok.":tu(2)=1
  114. 10548 ifve=15andge(g1)=-2andtu(2)=0thenprint"ok.":ge(g1)=-1
  115. 10550 ifve=18andob=1andtu(2)=0andge(g1)=-1thenprint"ok.":ge(g1)=-2
  116. 10560 ifve=23andob=1andtu(2)=0thenri(1)=7:ve=1
  117. 10590 return
  118. 10600 rem raum 6 ---------
  119. 10602 data 0,0,0,0,2,0,0,0,0,0
  120. 10605 print"raum nummer 6"
  121. 10620 return
  122. 10700 rem in der truhe -------
  123. 10702 data 0,0,0,0,0,0,0,0,0,0
  124. 10705 print"in der truhe."
  125. 10720 ifve=25andob=1andtu(2)=0thenri(1)=5:ve=1
  126. 10730 return
  127. 50000 rem ****************************
  128. 50010 rem *     befehlseingabe       *
  129. 50020 rem *     befehlszerlegung     *
  130. 50030 rem *     befehlscodierung     *
  131. 50040 rem ****************************
  132. 50050 ifud=1then50220
  133. 50060 poke198,0:be$="":print"was nun ? ";
  134. 50070 poke204,0
  135. 50080 getx$:ifx$=""then50080
  136. 50090 ifpeek(203)=1orlen(be$)>68thenprint" ":poke204,1:goto50140
  137. 50100 i=asc(x$):ifi<65ori>90thenifi<>32andi<>20andi<>34then50080
  138. 50110 ifi=20andbe$=""then50080
  139. 50120 ifi=20thenpoke204,1:print"[157]  [157][157]";:be$=left$(be$,len(be$)-1):goto50070
  140. 50130 printx$;:be$=be$+x$:goto50080
  141. 50140 fori=1to10:be$(i)="":next:wz=1:fori=1tolen(be$)
  142. 50150 :ifmid$(be$,i,1)=" "thengosub50190:goto50180
  143. 50160 :ifwz>10thenprint"eingabe ist zu lang !":i=len(be$)+1:goto50180
  144. 50170 :be$(wz)=be$(wz)+mid$(be$,i,1)
  145. 50180 nexti:goto50220
  146. 50190 ic=0:fori1=1toaz:ifbe$(wz)=au$(i1)thenic=1
  147. 50200 nexti1:ific=0thenwz=wz+1:return
  148. 50210 be$(wz)="":return
  149. 50220 ifud=1thenud=0:goto50240
  150. 50230 wz=1:ve=0:ob=0:pe=0
  151. 50240 ic=0:g1=0:g2=0
  152. 50250 fori=1tovz:ifbe$(wz)=ve$(i)thenve=i:ic=1
  153. 50251 iflen(be$(wz))<3then50260
  154. 50255 ifbe$(wz)=left$(ve$(i),len(be$(wz)))thenve=i-val(right$(ve$(i),1)):ic=1
  155. 50260 nexti:ific=1then50350
  156. 50270 fori=1togz:ifbe$(wz)<>ge$(i)then50300
  157. 50280 ic=1:ifg1=0theng1=i
  158. 50290 g2=i:ifg2=g1theng2=0
  159. 50300 nexti:ific=1then50350
  160. 50310 fori=1tooz:ifbe$(wz)=ob$(i)thenob=i:ic=1
  161. 50320 nexti:ific=1then50350
  162. 50330 fori=1topz:ifbe$(wz)=pe$(i)thenpe=i:ic=1
  163. 50340 nexti
  164. 50350 ifbe$(wz)="und"thenud=1:ic=1
  165. 50360 ific=0thenprint"ich kenne ";be$(wz);" nicht !":return
  166. 50370 wz=wz+1:ifwz>10orbe$(wz)=""orud=1thenreturn
  167. 50380 ic=0:goto50250
  168. 52000 rem t a b e l l e n
  169. 52005 restore52000
  170. 52010 rem verbtabelle ---------
  171. 52020 datan,s,w,o,nw,no,sw,so,rauf,runter
  172. 52030 dataoeffne,schliesse,schaue,untersuche1,nimm,nehme1,hole2
  173. 52035 dataverliere,lege1,wirf2,werfe3,inventur
  174. 52040 datagehe,betrete1
  175. 52045 dataverlasse
  176. 52100 vz=25:dimve$(vz):fori=1tovz:readve$(i):next
  177. 52200 rem gegenstandstabelle ---------
  178. 52210 dataschwert,-2
  179. 52211 dataseil,2
  180. 52212 dataschluessel,4
  181. 52213 datadiamant,5
  182. 52300 gz=4:dimge$(4):dimge(4):fori=1togz:readge$(i):readge(i):nexti
  183. 52400 rem objekttabelle ---------
  184. 52410 datatruhe,5
  185. 52412 dataschacht,6
  186. 52414 dataeisenring,6
  187. 52416 datatuer,2
  188. 52418 datatuer,5
  189. 52500 oz=5:dimob$(oz):dimoo(oz):fori=1tooz:readob$(i):readoo(i):nexti
  190. 52600 rem personentabelle -------
  191. 52610 datagespenst
  192. 52700 pz=1:dimpe$(pz):fori=1topz:readpe$(i):next
  193. 52900 rem allgemeine tabellen
  194. 52910 tu(1)=1:rem tuer 2/5
  195. 52920 tu(2)=1:rem truhe
  196. 52930 data1,3,4,3,1,2,5,2,6,2,1
  197. 52935 dimpe(11):fori=1to11:readpe(i):next:mo=1
  198. 53000 return
  199.